import request from '@/utils/request'
import { API_CONFIG } from '@/api/config'

// 登录方法
export function login(username, password, code, uuid) {
  const data = {
    username,
    password,
    code,
    uuid
  }
  return request({
    'url': '/login',
    headers: {
      isToken: false
    },
    'method': 'post',
    'data': data
  })
}

// 注册方法
export function register(data) {
  return request({
    url: '/register',
    headers: {
      isToken: false
    },
    method: 'post',
    data: data
  })
}

// 获取用户详细信息
export function getInfo() {
  return request({
    'url': '/getInfo',
    'method': 'get'
  })
}

// 退出方法
export function logout() {
  return request({
    'url': '/logout',
    'method': 'post'
  })
}

// 获取验证码
export function getCodeImg() {
  return request({
    url: '/captchaImage',
    headers: {
      isToken: false
    },
    method: 'get',
    timeout: 20000
  })
}

// 微信登录 - 通过code获取openid
export function wechatLogin(code) {
  // 统一在前端传递 orgId 与 appId，后端将基于这两个参数动态读取 AppSecret
  const data = {
    code,
    orgId: API_CONFIG.ORG_ID,
    appId: API_CONFIG.WECHAT_APPID
  }
  return request({
    url: API_CONFIG.WECHAT_LOGIN.GET_OPENID,
    headers: {
      isToken: false
    },
    method: 'post',
    data: data
  })
}

// 根据OpenID查询用户绑定信息
export function checkUserByOpenId(openId) {
  const data = {
    openId
  }
  return request({
    url: '/mobile/wechat/checkUser',
    headers: {
      isToken: false
    },
    method: 'post',
    data: data
  })
}

// 微信用户注册
export function registerWechatUser(openId, nickName, avatar) {
  const data = {
    openId,
    nickName,
    avatar,
    deptId: API_CONFIG.ORG_ID // 使用配置文件中的组织ID，后端会进行类型转换
  }
  return request({
    url: '/mobile/wechat/register',
    headers: {
      isToken: false
    },
    method: 'post',
    data: data
  })
}

// 微信自动登录
export function wechatAutoLogin(openId) {
  const data = {
    openId,
    deptId: API_CONFIG.ORG_ID // 传递组织ID，避免使用后端默认值114
  }
  return request({
    url: '/mobile/wechat/autoLogin',
    headers: {
      isToken: false
    },
    method: 'post',
    data: data
  })
}

// 获取微信OpenID
export function getOpenId() {
  return new Promise((resolve, reject) => {
    // #ifdef MP-WEIXIN
    uni.login({
      provider: 'weixin',
      success: function(loginRes) {
        if (loginRes.code) {
          // 调用后端接口获取openid
          wechatLogin(loginRes.code).then(response => {
            if (response.code === 200) {
              resolve(response.data.openid)
            } else {
              reject(new Error(response.msg || '获取OpenID失败'))
            }
          }).catch(error => {
            reject(error)
          })
        } else {
          reject(new Error('微信登录失败：' + loginRes.errMsg))
        }
      },
      fail: function(error) {
        reject(new Error('微信登录失败：' + error.errMsg))
      }
    })
    // #endif
    
    // #ifndef MP-WEIXIN
    // 非微信小程序环境，返回模拟的openid用于测试
    resolve('test_openid_' + Date.now())
    // #endif
  })
}
